Question: I'm brand new to coding and programming (started today actually). I've been watching a few videos and reading the beginning to a few books to see which I can click with, but I'm having trouble understanding some of it.

One of the videos utilized `endl` and another utilized `\n` in the basic "Hello World" introduction. I wanted to know more about the differences between the two.

So, I understand that the difference between `endl` and `\n` is that `endl` will flush the code while `\n` will not, which makes `endl` slower. That much I can search for on Google.

However, when searching for flushing C++, I'm not able to make heads or tails of what it means because of the jargon.

What does it mean to flush, and when and why would you want to do it? What is a buffer?

Please explain it in a very basic way, if you can.

Answer: 
Buffers are temporary memory used to store the input of a process that can take some time.

It can be either for not losing any data. Think of a communication between a fast computer and a slow one. The fast computer may send bytes at a higher rate than what the slow one can handle, while the slow one is processing a byte, others are then still arriving and they are stored in a buffer waiting to be processed.

Or, it can either be for performance reason. All operations have a static cost of time that is independent of the size of the data processed by the operation (it may need to initialize some data, wait for resource, ...). If that cost is not negligible, it could be interesting to pay that cost the least times possible. So we use a buffer to gather more data and merge multiple operations into one.

For your case, printing to the screen has not a negligible static time and it is why a buffer is used by default and the data is only printed if enough bytes are received.

Flushing a buffer means emptying it and forcing to treat the data in it. It can be useful if you want to immediately treat small amount of data.

For example, if you want to print "Please enter your age:" and wait for the user to enter a number, it's preferable that the user actually sees that request ! So here, flushing the buffer is mandatory.

But if you print a stream of texts (think of a program printing many texts like a compiler when compiling a big project) it's better to not flush and let the buffer fill up so that you don't spend the static time for each block you send (each source file for the compiler case for example). And flush after the last block to be sure we do not end up in the middle of the buffer, which is very likely.
To flush, means to empty the buffer.

Now, buffer is temporary storage area for storing data. 

Both endl and \n can be used to print newline character but there is minor difference between these two :

In case of endl, buffer is cleared by usage of internal call to flush the buffer

In case of \n, newline is printed but buffer is not flushed as no extra call is made 

So performance-wise, endl is better than \n