Op/3 binary with lower precedence somehow evaluated before unaries with higher precedence

I simpler test case would be possibly one from mathematics.
Showing that the pattern fy 2 yf has only limited very specific use.
Lets say we have a minus and a factorial operator:

:- op(200, fy, -).
:- op(200, yf, !).

:- use_module(library(arithmetic)).
:- arithmetic_function(!/1).

!(0,1) :- !.
!(N,X) :- N > 0, M is N-1, !(M,Y), X is N*Y.

?- X is 10!.
X = 3628800.

?- X is - 10!.
false.

Other Prolog systems might return -3628800, but nevertheless
the advice could be to never use fy and yf with same priority.
If fy and fy with different priority are used the table 6 of ISO

core standard becomes irrelevant and the code gets more portable.

This, as I said, is a bug. Pushed a fix. Any combination of operators that is valid according to the ISO standard should result in the term dictated by ISO. The issue of this topic is what to do with combinations that are invalid according to ISO as the given example is invalid.