It's a system of symbols used to compare the execution time of algorithms (time complexity) or the memory space required for an operation (space complexity).
O(1) The time of execution is always the same, like when the first element of an array is returned.
O(N) The time of execution grow linearly, like when we process all the elements of an array.
O(N^2) The time of execution is proportional to the square of the array size, like comparing each element with each other.
O(2^N) The time of execution is exponential and grow very fast.
O(logN) The time of execution grow very slowly, like in the case of a binary tree.
O(n logN) This is the product of a linear and a logarithmic execution.