If I have some apples on a table and pick single apple up, I don’t have zero apples in my hand. I think that’s why numbering doesn’t start at zero.
Think of a basket of apples. If you take the zeroth apple (empty basket), you have no apples. If you take the first apple, you have 1 apple and now the basket is empty again (0).
One also wouldn't have to do [length - 1] to access the last index; it would naturally be [length].
table = {apple0, apple1, apple2, apple3}; //length == 4
hand = {}; //length == 0
after table = {apple0, apple1, apple2}; length == 3
hand = {apple3}; //length == 1
You count apples in hand by looking at how many items there are, not by what indexes they have.