Before a program can print Hello, Ali, it has to have somewhere to keep Ali.
Before it can add up a score, it needs somewhere to keep the running total.
That somewhere is a variable.
A variable is a labelled box
Picture a row of boxes on a shelf. Each has a label on the front — its name —
and something inside — its value. When the program mentions score, it looks
in the box labelled score and uses whatever is in there at that moment.
Every box also has a type, fixed when the box is made: a box for whole numbers can't hold a word, and a box for a single letter can't hold a sentence.

Step through a few boxes being filled and refilled:
Two things to take from that. A line like score = score + 5 is read right to
left: work out score + 5 with the value that is in the box now, then put the
result back. And changing one box never changes another — bonus kept its 3.
Making a box
One line, three parts: the type (int), the name (age) and the
starting value (= 13). You can also make the box first and fill it later —
which is exactly what happens when the value comes from cin:
Until something is put in it, a box declared like that holds whatever happened to be left in that piece of memory. So give every variable a value — from or from — before you use it.