Why not multiply matching cells? Because a matrix is meant to act on a vector, and the action is a weighted sum. Look at A @ [x, y]: row 0 gives 1·x + 2·y and row 1 gives 3·x + 4·y. Each output is a weighted sum of the inputs, with the weights coming from one row. That is precisely what a neuron computes in Lesson 2 — so this is the multiplication that makes matrices useful. Multiplying matching cells is a different, also useful, operation with a different symbol.
Second view: columns combine. The same product reads as a mix of A’s columns, with the input saying how much of each: A @ [x, y] = x · [1, 3] + y · [2, 4]. Numeric check with x = 2, y = 1:
row view: A @ [2, 1] = [1·2 + 2·1, 3·2 + 4·1] = [4, 10]
column view: 2·[1, 3] + 1·[2, 4] = [2, 6] + [2, 4] = [4, 10] ✓
same vector, different picture — Lesson 3 lives in this view.
Second worked example, a non-square product. Multiply a 2 × 3 by a 3 × 2:
A = | 2 1 3 | B = | 1 2 |
| 1 4 0 | | 3 1 |
| 0 4 |
C[0][0] = 2·1 + 1·3 + 3·0 = 2 + 3 + 0 = 5
C[0][1] = 2·2 + 1·1 + 3·4 = 4 + 1 + 12 = 17
C[1][0] = 1·1 + 4·3 + 0·0 = 1 + 12 + 0 = 13
C[1][1] = 1·2 + 4·1 + 0·4 = 2 + 4 + 0 = 6
A @ B = | 5 17 | shapes: (2×3) @ (3×2) = (2×2)
| 13 6 | the inner 3 was used up by the multiply-and-add
element-wise is a different operation (identical shapes required):
| 1 2 | * | 5 6 | = | 5 12 | matching cells only
| 3 4 | | 7 8 | | 21 32 |