Overloading operators like '>>' or '<<' is completely different from using cout and cin. cout and cin are just objects of the iostream, standard library. You could define your own objects of type iostream and do the same.
Operators need to be overloaded because normally the operators available work with standard data types like int, double, string .. If you want to use operators with user defined data types or if you want to change the default behavior of the operators on standard types, you will have to overload the operators. I hope this addresses your question