I always thought of cout and cin calls as something like this:
cout << someVar
tells the compiler we're dumping the value of someVar into cout, just as we could dump water into a physical stream. Likewise,
cin >> someVar
tells the compiler to fill someVar with data from cin (everything before whitespace), just as we might fill a bucket with water from a physical stream.
But << and >> are bitwise operators. << shifts the bits to the left, while >> shifts the bits to the right. Why doesn't, say, cout << Hello World
and cout << My name is John
make the console not say "Hello World"?
Edit: This is not a duplicate of "Operator overloading" because while that question may implicitly address the << and >> operators, my question as presently constituted does not address overloading.