A.4.1 The Standard Evaluation Sequence
The following is the sequence of steps that Mathematica follows in evaluating an expression like h[, , ... ]. Every time the expression changes, Mathematica effectively starts the evaluation sequence over again.
If the expression is a raw object (e.g., Integer, String, etc.), leave it unchanged.
Evaluate the head h of the expression.
Evaluate each element of the expression in turn. If h is a symbol with attributes HoldFirst, HoldRest, HoldAll or HoldAllComplete, then skip evaluation of certain elements.
Unless h has attribute HoldAllComplete strip the outermost of any Unevaluated wrappers that appear in the .
Unless h has attribute SequenceHold, flatten out all Sequence objects that appear among the .
If h has attribute Flat, then flatten out all nested expressions with head h.
If h has attribute Listable, then thread through any that are lists.
If h has attribute Orderless, then sort the into order.
Unless h has attribute HoldAllComplete, use any applicable transformation rules associated with f that you have defined for objects of the form h[ f[, ... ], ... ].
Use any built-in transformation rules associated with f for objects of the form h[ f[, ... ], ... ].
Use any applicable transformation rules that you have defined for h[, , ... ] or for h[ ... ][ ... ].
Use any built-in transformation rules for h[, , ... ] or for h[ ... ][ ... ].