Why Associativity is a Fundamental Property of Operators
===

In any programming language textbooks, we are always told how each operator in that language has either left or right associativity.  It seems that associativity is a fundamental property of any operator regardless of the number of operands it takes.  It also seems to me that we can assign any associativity to any operator regardless of how we assign associativity to other operators.

But why is it the case?  Perhaps an example is better.  Suppose I want to design a hypothetical programming language.  Is it valid to assign associativity to these operators in this arbitrary way (all having the same precedence):


    unary operator: 
    ! right associative 
    binary operators:
    + left associative
    - right associative
    * left associative 
    / right associative

! + - * / are my 5 operators all having the same precedence.

If yes, how would an expression like 2+2!3+5*6/3-5!3!3-3*2 is parenthesized by my hypothetical parser? And why.

