A left to right 1 dimensional way of writing down x^{y^z} writes x <some operator> y <some operator> z. In math, the convention is that x^{y^z} means y^{(y^z)}, not \left(x^y\right)^z. Latex (which I am using here) forces brackets: x^y^z is illegal and latex requests you to manually put brackets: x^{y^z}. However, if you donâ€™t want to force brackets and make the operator non-chainable (which python doesnâ€™t do for any operators), right-associativity best matches what most people familiar with math notation will expect.

Because thatâ€™s how math works. Youâ€™ve also noticed itâ€™s not just python but many other languages do the same. Itâ€™s because these languages donâ€™t define this order, they just follow the mathematical convention.