Here is a multiplication table:
—————————————————————————
| 1 | 2 | 3 | 4 | 5 | 6 |
—————————————————————————
| 2 | 4 | 6 | 8 | 10| 12|
—————————————————————————
| 3 | 6 | 9 | 12| 15| 18|
—————————————————————————
| 4 | 8 | 12| 16| 20| 24|
—————————————————————————
| 5 | 10| 15| 20| 25| 30|
—————————————————————————
| 6 | 12| 18| 24| 30| 36|
—————————————————————————
I’ve drawn this out for multiplying any two values between 1 and 6.
Note that, within any row or column, moving in any particular direction, each step changes the value by the same amount. For example, in the column that starts with a 4, each step down adds 4 and each step up subtracts 4. Or in the top row, each step right adds 1 and each step left subtracts 1.
This is a very nice pattern, and mathematics is in general the study of patterns. Many phenomena in the world adhere to patterns, and so by understanding such patterns better abstractly, we can also understand the phenomena that model them.
Suppose we wished to extend this table to the left in such a way as that we maintained all these patterns. What should go to the left of the 1 in the corner there? Well, each step left in that row subtracts 1, and so going left we should end up with 1 - 1 = 0.
Indeed, each step left in the 2 4 6 8 10 row subtracts 2, and so going to the left of the 2 we should end up with 2 - 2 = 0. Each step left in the 3 6 9 12 row subtracts 3, and so going to the left of the 3, we should end up with 3 - 3 = 0. Our extension becomes like so:
—————————————————————————————
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
—————————————————————————————
| 0 | 2 | 4 | 6 | 8 | 10| 12|
—————————————————————————————
| 0 | 3 | 6 | 9 | 12| 15| 18|
—————————————————————————————
| 0 | 4 | 8 | 12| 16| 20| 24|
—————————————————————————————
| 0 | 5 | 10| 15| 20| 25| 30|
—————————————————————————————
| 0 | 6 | 12| 18| 24| 30| 36|
—————————————————————————————
In the same way, we can extend up. Each step up in the 1 2 3 column subtracts 1, so above that 1, we should get a 1 - 1 = 0. Each step up in the 2 4 6 column subtracts 2, so above that 2, we should get a 2 - 2 = 0. And each step up in the column of 0s? Well, it’s a column of 0s; each step up leaves it unchanged and makes another 0. So preserving these natural patterns again, when we extend our table up, it looks like this:
—————————————————————————————
| 0 | 0 | 0 | 0 | 0 | 0 | 0
—————————————————————————————
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
—————————————————————————————
| 0 | 2 | 4 | 6 | 8 | 10| 12|
—————————————————————————————
| 0 | 3 | 6 | 9 | 12| 15| 18|
—————————————————————————————
| 0 | 4 | 8 | 12| 16| 20| 24|
—————————————————————————————
| 0 | 5 | 10| 15| 20| 25| 30|
—————————————————————————————
| 0 | 6 | 12| 18| 24| 30| 36|
—————————————————————————————
So now we have a multiplication table for values between 0 and 6. And, lo and behold, what does it tell us 0 times 0 is? It says it’s 0! Indeed, it tells us 0 times any of these values is 0. It’s just what we get by following the natural patterns. We define multiplication so as to make these patterns hold.
(And if we kept going, extending these patterns once more left and up, we’d how -1 times -1 = 1. This is often a source of confusion for students, but is just what falls out of these patterns. Again, as mathematicians, we’re interested in clean patterns; we define multiplication so as to make these patterns hold.)