Parentheses and operator precedence
In general an expression may be enclosed in parentheses without changing its meaning.
If parentheses are not used, operator precedence follows the sequence below, starting with the operators that bind most tightly. Within each group the operators are evaluated lefttoright.
Operator 
Meaning 
unary 
unary lookup operator 

predicate, function call, lookup operator 

path operator 

simple mapping operator 
unary 
unary plus and minus 

arrow operator 

dynamic type conversion 

type test 

static type conversion 

type test 

set difference and intersection 

union operation on sets 

multiply, divide, integer divide, modulo 

plus, minus 

range expression 

string concatenation (XPath 3.0) 

comparisons 

Boolean and 

Boolean or 

conditional expressions 

quantified expressions 

variable declaration (XPath 3.0) 

iteration (mapping) over a sequence 

Sequence concatenation 
The various operators are described, in roughly the above order, in the sections that follow.