diff --git a/dynare++/parser/cc/tree.hh b/dynare++/parser/cc/tree.hh
index a125f8be850bffceccd1fc7ce848708adfe6037c..88474b369ef51feb9ea29faeed86becc8f4ae064 100644
--- a/dynare++/parser/cc/tree.hh
+++ b/dynare++/parser/cc/tree.hh
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2005-2011 Ondra Kamenik
- * Copyright © 2019 Dynare Team
+ * Copyright © 2019-2022 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -85,8 +85,8 @@ namespace ogp
     operator<(const Operation &op) const
     {
       return (code < op.code
-              || code == op.code
-              && (op1 < op.op1 || op1 == op.op1 && op2 < op.op2));
+              || (code == op.code
+                  && (op1 < op.op1 || (op1 == op.op1 && op2 < op.op2))));
     }
     /** Returns a number of operands. */
     int
@@ -98,7 +98,7 @@ namespace ogp
     size_t
     hashval() const
     {
-      return op2+1 + (op1+1)^15 + static_cast<int>(code)^30;
+      return (op2+1 + op1+1)^(15 + static_cast<int>(code))^30;
     }
 
     code_t
diff --git a/dynare++/sylv/cc/Vector.cc b/dynare++/sylv/cc/Vector.cc
index 33db2f9f9fdc1f568e484d9dd304650aba7d59ae..c84453d717f2be6456b75794e8c6d2a966ef53b1 100644
--- a/dynare++/sylv/cc/Vector.cc
+++ b/dynare++/sylv/cc/Vector.cc
@@ -52,8 +52,8 @@ Vector::operator=(const Vector &v)
     throw SYLV_MES_EXCEPTION("Attempt to assign vectors with different lengths.");
 
   if (s == v.s
-      && (data <= v.data && v.data < data+len*s
-          || v.data <= data && data < v.data+v.len*v.s)
+      && ((data <= v.data && v.data < data+len*s)
+          || (v.data <= data && data < v.data+v.len*v.s))
       && (data-v.data) % s == 0)
     throw SYLV_MES_EXCEPTION("Attempt to assign overlapping vectors.");
 
@@ -67,8 +67,8 @@ Vector::operator=(const ConstVector &v)
   if (v.len != len)
     throw SYLV_MES_EXCEPTION("Attempt to assign vectors with different lengths.");
   if (s == v.s
-      && (data <= v.data && v.data < data+len*s
-          || v.data <= data && data < v.data+v.len*v.s)
+      && ((data <= v.data && v.data < data+len*s)
+          || (v.data <= data && data < v.data+v.len*v.s))
       && (data-v.data) % s == 0)
     throw SYLV_MES_EXCEPTION("Attempt to assign overlapping vectors.");
 
diff --git a/dynare++/sylv/testing/tests.cc b/dynare++/sylv/testing/tests.cc
index f283ee4cbeb0a6b69c80f1014af9bea68043bed4..b2e3628bae978c0cebf814860002c8f753072664 100644
--- a/dynare++/sylv/testing/tests.cc
+++ b/dynare++/sylv/testing/tests.cc
@@ -186,8 +186,8 @@ TestRunnable::level_kron(bool trans, const std::string &mname, const std::string
   MMMatrixIn mmc(cname);
 
   int length = power(m, depth)*n;
-  if (level > 0 && mmt.row() != m
-      || level == 0 && mmt.row() != n
+  if ((level > 0 && mmt.row() != m)
+      || (level == 0 && mmt.row() != n)
       || mmv.row() != length
       || mmc.row() != length)
     {