Macaulay2 » Documentation
Packages » Macaulay2Doc > The Macaulay2 language > operators > precedence of operators
next | previous | forward | backward | up | index | toc

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