next | previous | forward | backward | up | top | index | toc | home
Macaulay2 > The Macaulay2 language > operators > precedence of operators

precedence of operators

One aspect of parsing precedence is associativity. A left-associative operator is one, such as *, with the property that x * y * z is parsed as (x * y) * z. A right-associative operator is one, such as =, with the property that x = y = z is parsed as x = (y = z). These operators are left associative: # #? % & * ** + ++ , - . .. .? / // << @@ ^ ^** ^^ _ | ||, and these operators are right associative: != -> : := ; < <- <= <==> = =!= == === ===> ==> => > >= >> ? @ \ \\ |- and or SPACE .

Here are the operators arranged in order of increasing parsing precedence. For example, * has higher parsing precedence than +, and hence 2+3*5 is parsed as though it had been written as 2+(3*5). The symbol SPACE represents the operator that is used when two things are adjacent in program code.

 1                  ;                

 2                  ,                

 4        ->  :=  <-  =  =>  >>      

 6                  <<               

 7                 ===>              

 8                  |-               

 9                 <==>              

10                 ==>               

11                  or               

12                 and               

13                 not               

14  !=  <  <=  =!=  ==  ===  >  >=  ?

15                  ||               

16                  :                

17                  |                

18                  ^^               

19                  &                

20                  ..               

21               +  ++  -            

22                  **               

24          %  *  /  //  \  \\       

25                  @                

26              (*)  SPACE           

27                  @@               

28                  ~                

29       #  #?  .  .?  ^  ^**  _     

30                  !                

See also