Why 0[a] == a[0] works

As a[0] = *(a + 0), seems logical that 0[a] = *(0 + a) which is the same as *(a + 0).

a[8] = *(a + 8) == *(8 + a) == 8[a]