Does that help (The notation you use is extremely confusing to me, writing operators without operands, so I will stick to the standard-notation which always shows the operators plus the arguments.)

As for associativity — and this is all about it — there is a simple rule-of-thumb. Look at the y and x meaning Yes and No. xfy "says" on its left side x. So it does not "want" to associate with operators of the same priority. And on the right side, it "says" y, thus Yes I want to associate. When there are two operators that both say yes "to each other", it is the first occurring (when reading left-to-right) which takes the second as argument. If you will, that case is handled like right associativity.

code :

```
Unbracketed term Equivalent bracketed term
-----------------------------------------------
1 xfy 2 xfy 3 1 xfy (2 xfy 3) ** right-associative
1 xfy 2 yfx 3 1 xfy (2 yfx 3) ** this is a special!
1 yfx 2 xfy 3 -------------- ** invalid: noone wants association
1 yfx 2 yfx 3 (1 yfx 2) yfx 3 ** left-associative
```

```
Unbracketed term Equivalent bracketed term
-----------------------------------------------
fy fy 1 yf yf fy (fy ((1 yf) yf)
```