General rules for expressions with embedded expressions

The following rules apply to these kinds of expressions: parenthesized expressions (14.5.3), element access expressions (14.5.6), base access expressions with indexing (14.5.8), increment and decrement expressions (14.5.9, 14.6.5), cast expressions (14.6.6), unary +, -, ~, * expressions, binary +, -, *, /, %, <<, >>, <, <=, >, >=, ==, !=, is, as, &, |, ^ expressions (14.7, 14.8, 14.9, 14.10), compound assignment expressions (14.13.2), checked and unchecked expressions (14.5.12), array and delegate creation expressions (14.5.10).
Each of these expressions has one or more sub-expressions that are unconditionally evaluated in a fixed order. [Example: For example, the binary % operator evaluates the left hand side of the operator, then the right hand side. An indexing operation evaluates the indexed expression, and then evaluates each of the index expressions, in order from left to right. end example] For an expression expr, which has sub-expressions expr1, expr2, ..., exprn, evaluated in that order: The definite assignment state of v at the beginning of expr1 is the same as the definite assignment state at the beginning of expr. The definite assignment state of v at the beginning of expri (i greater than one) is the same as the definite assignment state at the end of expri-1. The definite assignment state of v at the end of expr is the same as the definite assignment state at the end of exprn.