next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Macaulay2Doc > 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 xor .

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.

 8                  ;                
    
10                  ,                
    
14        ->  :=  <-  =  =>  >>      
    
18                  <<               
    
20                  |-               
    
22              <===  ===>           
    
24                 <==>              
    
26               <==  ==>            
    
28                  or               
    
30                 xor               
    
32                 and               
    
34                 not               
    
36  !=  <  <=  =!=  ==  ===  >  >=  ?
    
38                  ||               
    
40                  :                
    
42                  |                
    
44                  ^^               
    
46                  &                
    
48               ..  ..<             
    
50               +  ++  -            
    
52                  **               
    
56          %  *  /  //  \  \\       
    
58                  @                
    
60                SPACE              
    
62                 (*)               
    
64                  @@               
    
66              ^*  _*  ~            
    
68       #  #?  .  .?  ^  ^**  _     
    
70                  !                

See also