Zrozumienie pierwszeństwa operatora w php

W produkcji mam następujący kod, który wydaje się powodować nieskończoną pętlę.

 $z=1;
 while (!$apns = $this->getApns($streamContext) && $z < 11)
 {
    myerror_log("unable to conncect to apple. sleep for 2 seconds and try again");
    $z++;
    sleep(2);
 }

W jaki sposób stosowane są reguły pierwszeństwa powodujące to zachowanie?

http://php.net/manual/en/language.operators.precedence.php

Widzę tę notatkę w dokumentach:

Chociaż = ma niższy priorytet niż większość innych operatorów, PHP nadal zezwala na wyrażenia podobne do następujących: if (! $ A = foo ()), w którym to przypadku wartość zwracana przez foo () jest umieszczana w $ a.

Co sprawia, że ​​myślę, że = powinno się najpierw ocenić. a później ! potem &&, co nie spowodowałoby nieskończonej pętli.

questionAnswers(2)

yourAnswerToTheQuestion