diff --git a/build.gradle b/build.gradle
index 2899f58..bef3010 100644
--- a/build.gradle
+++ b/build.gradle
@@ -13,6 +13,7 @@
     tasks.withType(JavaCompile) {
         options.compilerArgs += [
                 '-XepDisableAllChecks',
+                '-Xep:OperatorPrecedence:ERROR',
                 '-Xep:RemoveUnusedImports:ERROR']
     }
 }
diff --git a/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java b/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java
index 885a8af..a61ad5d 100644
--- a/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java
+++ b/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java
@@ -89,7 +89,7 @@
       // For element width 1 split the 16-bit data units into bytes.
       for (int i = 0; i < data.length; i++) {
         for (int j = 0; j < 2; j++) {
-          int value = (data[i] >> j * 8) & 0xff;
+          int value = (data[i] >> (j * 8)) & 0xff;
           if (i * 2 + j < size) {
             builder.append("      ");
             builder.append(StringUtils.hexString(value, 2));
diff --git a/src/main/java/com/android/tools/r8/code/Instruction.java b/src/main/java/com/android/tools/r8/code/Instruction.java
index 504b605..a91d8f2 100644
--- a/src/main/java/com/android/tools/r8/code/Instruction.java
+++ b/src/main/java/com/android/tools/r8/code/Instruction.java
@@ -78,7 +78,7 @@
   }
 
   protected static int makeByte(int high, int low) {
-    return ((high & 0xf) << 4) | low & 0xf;
+    return ((high & 0xf) << 4) | (low & 0xf);
   }
 
   protected void writeFirst(int aa, ShortBuffer dest) {
diff --git a/src/main/java/com/android/tools/r8/graph/DexString.java b/src/main/java/com/android/tools/r8/graph/DexString.java
index 75a6d35..e0d336b 100644
--- a/src/main/java/com/android/tools/r8/graph/DexString.java
+++ b/src/main/java/com/android/tools/r8/graph/DexString.java
@@ -161,8 +161,8 @@
         }
         // If either of the strings have the null character starting here, the null character
         // sort lowest.
-        if (b1 == 0xc0 && (content[index + 1] & 0xff) == 0x80 ||
-            b2 == 0xc0 && (other.content[index + 1] & 0xff) == 0x80) {
+        if ((b1 == 0xc0 && (content[index + 1] & 0xff) == 0x80) ||
+            (b2 == 0xc0 && (other.content[index + 1] & 0xff) == 0x80)) {
           return b1 == 0xc0 && (content[index + 1] & 0xff) == 0x80 ? -1 : 1;
         }
         return diff;
diff --git a/src/main/java/com/android/tools/r8/graph/DexType.java b/src/main/java/com/android/tools/r8/graph/DexType.java
index 0d81ea4..244e8ad 100644
--- a/src/main/java/com/android/tools/r8/graph/DexType.java
+++ b/src/main/java/com/android/tools/r8/graph/DexType.java
@@ -397,7 +397,7 @@
         assert next.hierarchyLevel == ROOT_LEVEL;
       } else {
         assert superType.hierarchyLevel == next.hierarchyLevel - 1
-            || superType.hierarchyLevel == ROOT_LEVEL && next.hierarchyLevel == INTERFACE_LEVEL;
+            || (superType.hierarchyLevel == ROOT_LEVEL && next.hierarchyLevel == INTERFACE_LEVEL);
         assert superType.directSubtypes.contains(next);
       }
       if (next.hierarchyLevel != INTERFACE_LEVEL) {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
index 7a8895d..f6a860d 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -457,7 +457,7 @@
     return instruction.isArgument()
         || instruction.isDebugLocalsChange()
         || (instruction.isConstNumber() && !instruction.outValue().needsRegister())
-        || instruction.isGoto() && instruction.asGoto().getTarget() == nextBlock;
+        || (instruction.isGoto() && instruction.asGoto().getTarget() == nextBlock);
   }
 
   public void addDebugPosition(DebugPosition position) {
diff --git a/src/main/java/com/android/tools/r8/naming/Minifier.java b/src/main/java/com/android/tools/r8/naming/Minifier.java
index 6a58866..fa85364 100644
--- a/src/main/java/com/android/tools/r8/naming/Minifier.java
+++ b/src/main/java/com/android/tools/r8/naming/Minifier.java
@@ -115,13 +115,13 @@
           directTarget != null ? appInfo.definitionFor(directTarget.method.getHolder()) : null;
       DexClass virtualTargetHolder =
           virtualTarget != null ? appInfo.definitionFor(virtualTarget.method.getHolder()) : null;
-      return directTarget == null && staticTarget == null && virtualTarget == null
-          || virtualTarget != null && virtualTarget.method == item
-          || directTarget != null && directTarget.method == item
-          || staticTarget != null && staticTarget.method == item
-          || directTargetHolder != null && directTargetHolder.isLibraryClass()
-          || virtualTargetHolder != null && virtualTargetHolder.isLibraryClass()
-          || staticTargetHolder != null && staticTargetHolder.isLibraryClass();
+      return (directTarget == null && staticTarget == null && virtualTarget == null)
+          || (virtualTarget != null && virtualTarget.method == item)
+          || (directTarget != null && directTarget.method == item)
+          || (staticTarget != null && staticTarget.method == item)
+          || (directTargetHolder != null && directTargetHolder.isLibraryClass())
+          || (virtualTargetHolder != null && virtualTargetHolder.isLibraryClass())
+          || (staticTargetHolder != null && staticTargetHolder.isLibraryClass());
     }
 
     @Override
diff --git a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
index c5d78f3..2d9154a8 100644
--- a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
+++ b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
@@ -377,7 +377,7 @@
         assert bufferLocal != null;
         do {
           char ch = bufferLocal[pos];
-          if ((ch >= 'a') && (ch <= 'z') || (ch >= 'A') && (ch <= 'Z')
+          if (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))
               || !isStopSymbol(ch)) {
             identBuf.append(bufferLocal[pos]);
             pos++;
diff --git a/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java b/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java
index f538125..a08f521 100644
--- a/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java
+++ b/src/main/java/com/android/tools/r8/optimize/BridgeMethodAnalysis.java
@@ -94,7 +94,7 @@
       // Do not forward calls from a bridge method to itself while the bridge method is still
       // a bridge.
       if (target == null ||
-          context.accessFlags.isBridge() && target == context.method) {
+          (context.accessFlags.isBridge() && target == context.method)) {
         return previous;
       } else {
         return target;
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index cd56ef5..50dae72 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -1006,7 +1006,7 @@
       while (!eof(end)) {
         char current = contents.charAt(end);
         if ((start == end && Character.isJavaIdentifierStart(current)) ||
-            (start < end) && (Character.isJavaIdentifierPart(current) || current == '.')) {
+            ((start < end) && (Character.isJavaIdentifierPart(current) || current == '.'))) {
           end++;
         } else {
           break;
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
index bd72a80..aa9c360 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
@@ -96,7 +96,7 @@
         return false;
       }
       // TODO(herhut): Maybe it would be better to do this breadth first.
-      if (className.matches(iface) && containsAnnotation(annotation, ifaceClass.annotations)
+      if ((className.matches(iface) && containsAnnotation(annotation, ifaceClass.annotations))
           || anyImplementedInterfaceMatches(ifaceClass, className, annotation)) {
         return true;
       }
