The `**`

operator follows normal mathematical conventions; it is right-associative:

In the usual computer science jargon, exponentiation in mathematics is right-associative, which means that x

^{yz}should be read as x^{(yz)}, not (x^{y})^{z}. In expositions of the BODMAS rules that are careful enough to address this question, the rule is to evaluate the top exponent first.

and from Wikipedia on the *Order of Operations*:

If exponentiation is indicated by stacked symbols, the usual rule is to work from the top down, because exponention is right-associative in mathematics.

So `2 ** 3 ** 4`

is calculated as `2 ** (3 ** 4)`

(== 2417851639229258349412352) not `(2 ** 3) ** 4`

(== 4096).

This is pretty universal across programming languages; it is called *right-associativity*, although there *are* exceptions, with Excel and MATLAB being the most notable.