Arr base array element
The real reason why array index starts at zero goes back to the original creator of C language. It is actually related to how C language sees memory and elements placed in it. It uses these index to actually calculate where in memory that particular item is. If you are not interested in the math behind the calculation then just assume that it is easier to calculate the location of first element by using a zero based index ( however many C veteran can still argue that using a 1 for starting index is equally good). So it is just a design choice that C language creator made ( and were happy with it). I hope it helps.