Как научиться быстро считать логические выражения?
Разбивайте сложное на простые части.  A || B & (C || D) придумаем более практический пример (эквивалентный вашему).if (!file.exist || (file.type != DIRECTORY)  & (file.creationDate < lastGoodDate || file.size > maxSize))
{
   printErrorMessage();
}
Такое сложно написать и прочитать. Более длинный, зато более понятный вариант:bool isBadFile(file)
{
   if (!file.exist)
      return true; 

   if (file.type == DIRECTORY)
      return fasle; //skip directories

   bool isTooOld = file.creationDate < lastGoodDate;
   bool isTooBig = file.size > maxSize;

   return isTooBig || isTooOld
}

if (isBadFile(file))
{
   printErrorMessage();
}
Избегайте подобных решений, переписывайте, пишите ясный, прозрачный код, отстреливайте тех, кто пишет как индус.