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 .

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                 and               
    
32                 not               
    
34  !=  <  <=  =!=  ==  ===  >  >=  ?
    
36                  ||               
    
38                  :                
    
40                  |                
    
42                  ^^               
    
44                  &                
    
46               ..  ..<             
    
48               +  ++  -            
    
50                  **               
    
54          %  *  /  //  \  \\       
    
56                  @                
    
58                SPACE              
    
60                 (*)               
    
62                  @@               
    
64              ^*  _*  ~            
    
66       #  #?  .  .?  ^  ^**  _     
    
68                  !                

See also