The matrix product is associative. That means you can put (decently) pairs of parentheses around the individual term at your desire. Now, when you choose parentheses so that you start with the product including the vector, e.g. like so for column vectors (i.e. the vector is on the right and the matrix on the left, typical for OpenGL)

**M**_{1} * **M**_{2} * ( **M**_{3} * **v** )

and continue to the outer terms, like so

= **M**_{1} * ( **M**_{2} * ( **M**_{3} * **v** ) )

**M**

_{3}, then

**M**

_{2}, and then

**M**

_{1}", although that wording is imprecise.

**v**' *

**M**

_{3}' ) *

**M**

_{2}' )*

**M**

_{1}'

^{**}and you use column vectors, then the formula with parentheses looks like

**T*** (

**R*** (

**S***

**v**) )

^{**}Notice please that I've chosen a wording here that is not as blurry as "first … then …" ;)

Opengl reads in reverse order ...

As said above, "order" without further context is misleading here. For example, you can calculate

( ( **M**_{1} * **M**_{2} ) * **M**_{3} ) * **v**