// ------------------------------------------------------------------------ // Relational operators - 1 operator // ---------- // For Integer operands, Real operands, Character Operands, Mixed operands // Correctness // LessThan, GreaterThan // small op large, large op small, equal op equal // LessEquals, GreaterEquals // small op large, large op small, equal op equal // Equals, NotEquals // integers, reals // small op large, large op small, equal op equal // integers, boolean // small op large, large op small, equal op equal // // Integer operands # 101 Relational.<.Correct > < // 3 < 7 > Type: expression Hardness: 10 # 102 Relational.<.Correct > < // 9 < 4 > Type: expression Hardness: 10 # 103 Relational.<.Correct > < // 4 < 4 > Type: expression Hardness: 10 # 104 Relational.>.Correct > > // 4 > 6 > Type: expression Hardness: 10 # 105 Relational.>.Correct > > // 7 > 5 > Type: expression Hardness: 10 # 106 Relational.>.Correct > > // 6 > 6 > Type: expression Hardness: 10 # 107 Relational.<=.Correct > <= // 4 <= 9 > Type: expression Hardness: 10 # 108 Relational.<=.Correct > <= // 7 <= 3 > Type: expression Hardness: 10 # 109 Relational.<=.Correct > <= // 7 <= 7 > Type: expression Hardness: 10 # 110 Relational.>=.Correct > >= // 5 >= 6 > Type: expression Hardness: 10 # 111 Relational.>=.Correct > >= // 6 >= 3 > Type: expression Hardness: 10 # 112 Relational.>=.Correct > >= // 5 >= 5 > Type: expression Hardness: 10 # 113 Relational.==.Correct > == // 2 == 9 > Type: expression Hardness: 10 # 114 Relational.==.Correct > == // 8 == 4 > Type: expression Hardness: 10 # 115 Relational.==.Correct > == // 8 == 8 > Type: expression Hardness: 10 # 116 Relational.!=.Correct > != // 3 != 5 > Type: expression Hardness: 10 # 117 Relational.!=.Correct > != // 7 != 4 > Type: expression Hardness: 10 # 118 Relational.!=.Correct > != // 9 != 9 > Type: expression Hardness: 10 // Real operands # 121 Relational.<.Correct > < // 3.5 < 7.2 > Type: expression Hardness: 10 # 122 Relational.<.Correct > < // 9.2 < 4.5 > Type: expression Hardness: 10 # 123 Relational.<.Correct > < // 4.0 < 4.0 > Type: expression Hardness: 10 # 124 Relational.>.Correct > > // 4.6 > 6.4 > Type: expression Hardness: 10 # 125 Relational.>.Correct > > // 7.5 > 5.3 > Type: expression Hardness: 10 # 126 Relational.>.Correct > > // 6.0 > 6.0 > Type: expression Hardness: 10 # 127 Relational.<=.Correct > <= // 4.4 <= 9.9 > Type: expression Hardness: 10 # 128 Relational.<=.Correct > <= // 7.3 <= 3.6 > Type: expression Hardness: 10 # 128 Relational.<=.Correct > <= // 7.0 <= 7.0 > Type: expression Hardness: 10 # 130 Relational.>=.Correct > >= // 5.2 >= 6.8 > Type: expression Hardness: 10 # 131 Relational.>=.Correct > >= // NOT PERFECT // 6.5 >= 6.25 > Type: expression Hardness: 10 # 132 Relational.>=.Correct > >= // 5.0 >= 5.0 > Type: expression Hardness: 10 # 133 Relational.==.Correct > == // 2.9 == 9.2 > Type: expression Hardness: 10 # 134 Relational.==.Correct > == // 8.5 == 4.8 > Type: expression Hardness: 10 # 135 Relational.==.Correct > == // 8.0 == 8.0 > Type: expression Hardness: 10 # 136 Relational.!=.Correct > != // 3.6 != 6.3 > Type: expression Hardness: 10 # 137 Relational.!=.Correct > != // 7.3 != 4.6 > Type: expression Hardness: 10 # 138 Relational.!=.Correct > != // 9.0 != 9.0 > Type: expression Hardness: 10 // // Character operands // // within lower case, within upper case, between lower and upper case, digits // // # 141 // Relational.<.Correct // > // 'a' < 'e' // > // Type: expression // Hardness: 20 // // # 142 // Relational.<.Correct // > // 'm' < 'c' // > // Type: expression // Hardness: 20 // // # 143 // Relational.<.Correct // > // 'A' < 'A' // > // Type: expression // Hardness: 20 // // # 144 // Relational.>.Correct // > // 'd' > 'f' // > // Type: expression // Hardness: 20 // // # 145 // Relational.>.Correct // > // 'z' > 'a' // > // Type: expression // Hardness: 20 // // # 146 // Relational.>.Correct // > // 'P' > 'P' // > // Type: expression // Hardness: 20 // // # 147 // Relational.<=.Correct // > // 'G' <= 'Q' // > // Type: expression // Hardness: 20 // // # 148 // Relational.<=.Correct // > // 'R' <= 'H' // > // Type: expression // Hardness: 20 // // # 149 // Relational.<=.Correct // > // 'L' <= 'L' // > // Type: expression // Hardness: 20 // // # 150 // Relational.>=.Correct // > // 'J' >= 'K' // > // Type: expression // Hardness: 20 // // # 151 // Relational.>=.Correct // > // 'r' >= 'p' // > // Type: expression // Hardness: 20 // // # 152 // Relational.>=.Correct // > // 'j' >= 'j' // > // Type: expression // Hardness: 20 // // # 153 // Relational.==.Correct // > // 't' == 'w' // > // Type: expression // Hardness: 20 // // # 154 // Relational.==.Correct // > // 's' == 'c' // > // Type: expression // Hardness: 20 // // # 155 // Relational.==.Correct // > // 'J' == 'J' // > // Type: expression // Hardness: 20 // // # 156 // Relational.!=.Correct // > // 'e' != 'r' // > // Type: expression // Hardness: 20 // // # 157 // Relational.!=.Correct // > // 'W' != 'M' // > // Type: expression // Hardness: 20 // // # 158 // Relational.!=.Correct // > // 'v' != 'v' // > // Type: expression // Hardness: 20 // // // lower and upper case // // # 161 // Relational.<.Correct // > // 'Z' < 'a' // > // Type: expression // Hardness: 25 // // # 162 // Relational.<.Correct // > // 'b' < 'X' // > // Type: expression // Hardness: 25 // // # 163 // Relational.>.Correct // > // 'P' > 'd' // > // Type: expression // Hardness: 25 // // # 164 // Relational.>.Correct // > // 'f' > 'M' // > // Type: expression // Hardness: 25 // // # 165 // Relational.<=.Correct // > // 'R' <= 'k' // > // Type: expression // Hardness: 25 // // # 166 // Relational.<=.Correct // > // 'p' <= 'W' // > // Type: expression // Hardness: 25 // // # 167 // Relational.>=.Correct // > // 'S' >= 'g' // > // Type: expression // Hardness: 25 // // # 168 // Relational.>=.Correct // > // 'k' >= 'N' // > // Type: expression // Hardness: 25 // // # 169 // Relational.==.Correct // > // 'a' == 'A' // > // Type: expression // Hardness: 25 // // # 170 // Relational.==.Correct // > // 'P' == 'p' // > // Type: expression // Hardness: 25 // // # 171 // Relational.!=.Correct // > // 'e' != 'E' // > // Type: expression // Hardness: 25 // // # 172 // Relational.!=.Correct // > // 'H' != 'h' // > // Type: expression // Hardness: 25 // // // digit characters // // # 181 // Relational.<.Correct // > // '1' < '7' // > // Type: expression // Hardness: 25 // // # 182 // Relational.<.Correct // > // '6' < '4' // > // Type: expression // Hardness: 25 // // # 183 // Relational.>.Correct // > // '3' > '5' // > // Type: expression // Hardness: 25 // // # 184 // Relational.>.Correct // > // '7' > '4' // > // Type: expression // Hardness: 25 // // # 185 // Relational.<=.Correct // > // '3' <= '5' // > // Type: expression // Hardness: 25 // // # 186 // Relational.<=.Correct // > // '7' <= '5' // > // Type: expression // Hardness: 25 // // # 187 // Relational.>=.Correct // > // '2' >= '8' // > // Type: expression // Hardness: 25 // // # 188 // Relational.>=.Correct // > // '6' >= '4' // > // Type: expression // Hardness: 25 // // # 189 // Relational.==.Correct // > // '3' == '6' // > // Type: expression // Hardness: 25 // // # 190 // Relational.==.Correct // > // '5' == '5' // > // Type: expression // Hardness: 25 // // # 191 // Relational.!=.Correct // > // '7' != '6' // > // Type: expression // Hardness: 25 // // # 192 // Relational.!=.Correct // > // '1' != '1' // > // Type: expression // Hardness: 25 // Mixed operands int-real, int-char // (other combinations - int-bool, real-char, real-bool, char-bool undesirable) // int-real # 201 Relational.<.Correct > < // 9 < 4.5 > Type: expression Hardness: 10 # 202 Relational.<.Correct > 4 < 4.0 > Type: expression Hardness: 10 # 203 Relational.>.Correct > > // NOT PERFECT // 13.5 > 13 > Type: expression Hardness: 10 # 204 Relational.>.Correct > 7 > 7.0 > Type: expression Hardness: 10 # 205 Relational.<=.Correct > 8.7 <= 8 > Type: expression Hardness: 10 # 206 Relational.<=.Correct > 11 <= 11.0 > Type: expression Hardness: 10 # 207 Relational.>=.Correct > 6 >= 6.9 > Type: expression Hardness: 10 # 208 Relational.>=.Correct > 9.0 >= 9 > Type: expression Hardness: 10 # 209 Relational.==.Correct > 14 == 14.0 > Type: expression Hardness: 10 # 210 Relational.==.Correct > == // 7.5 == 5.7 > Type: expression Hardness: 10 # 211 Relational.!=.Correct > 7.3 != 7 > Type: expression Hardness: 10 # 212 Relational.!=.Correct > 6 != 6.0 > Type: expression Hardness: 10 // // int-char // // # 221 // Relational.<.Correct // > // '4' < 4 // > // Type: expression // Hardness: 10 // // # 222 // Relational.<.Correct // > // 7 < '7' // > // Type: expression // Hardness: 10 // // # 223 // Relational.>.Correct // > // '6' > 6 // > // Type: expression // Hardness: 10 // // # 224 // Relational.>.Correct // > // 1 > '1' // > // Type: expression // Hardness: 10 // // # 225 // Relational.==.Correct // > // '5' == 5 // > // Type: expression // Hardness: 10 // // # 226 // Relational.!=.Correct // > // 9 != '9' // > // Type: expression // Hardness: 10 // // All negative numbers # 231 Relational.<.Correct > < // -5 < -3 > Type: expression Hardness: 20 # 232 Relational.<.Correct > < // -3.3 < -9.9 > Type: expression Hardness: 20 # 233 Relational.<.Correct > < // -13 < 1 > Type: expression Hardness: 20 # 236 Relational.>.Correct > > // -8 > -4 > Type: expression Hardness: 20 # 237 Relational.>.Correct > > // -4.5 > -9 > Type: expression Hardness: 20 # 238 Relational.>.Correct > > 0 // -7 > 0 > Type: expression Hardness: 20 # 241 Relational.<=.Correct > <= // -3.5 <= -5 > Type: expression Hardness: 20 # 242 Relational.<=.Correct > <= // -9.8 <= -6.5 > Type: expression Hardness: 20 # 243 Relational.<=.Correct > <= 0 // -6 <= 0 > Type: expression Hardness: 20 # 244 Relational.<=.Correct > 6 <= -6 > Type: expression Hardness: 20 # 246 Relational.>=.Correct > >= // -8 >= -9 > Type: expression Hardness: 20 # 247 Relational.>=.Correct > >= // -7 >= -3 > Type: expression Hardness: 20 # 248 Relational.>=.Correct > 4 >= -4 > Type: expression Hardness: 20 # 249 Relational.>=.Correct > >= 0 // -7 >= 0 > Type: expression Hardness: 20 # 251 Relational.==.Correct > 5 == -5 > Type: expression Hardness: 20 # 252 Relational.==.Correct > 5.9 == -9.5 > Type: expression Hardness: 20 # 253 Relational.==.Correct > == 0 // -10 == 0 > Type: expression Hardness: 20 # 256 Relational.!=.Correct > 1.0 != -1 > Type: expression Hardness: 20 # 257 Relational.!=.Correct > -9 != 9 > Type: expression Hardness: 20 # 258 Relational.!=.Correct > != 0 // -3 != 0 > Type: expression Hardness: 20 // ---------------------------------------------------------------------- // Precedence // {LessThan, GreaterThan, LessEquals, GreaterEquals} Vs {Equals, NotEquals} # 301 Relational.{<.Precedence,==.Precedence} > < == false // 5 < 9 == false > Type: expression Hardness: 20 # 302 Relational.{<.Precedence,==.Precedence} > < == false // 11 < 8 == false > Type: expression Hardness: 20 # 303 Relational.{<.Precedence,!=.Precedence} > < != true // 7 < 3 != true > Type: expression Hardness: 20 # 304 Relational.{<.Precedence,!=.Precedence} > < != true // 4 < 8 != true > Type: expression Hardness: 20 # 305 Relational.{<=.{Correct,Precedence},==.Precedence} > <= == true // 6 <= 6 == true > Type: expression Hardness: 20 # 306 Relational.{<=.Precedence,==.Precedence} > <= == false // 4 <= 4 == false > Type: expression Hardness: 20 # 307 Relational.{<=.Precedence,!=.Precedence} > <= != false // 5.7 <= 7.5 != false > Type: expression Hardness: 20 # 308 Relational.{<=.Precedence,!=.Precedence} > <= != false // 8.2 <= 2.8 != false > Type: expression Hardness: 20 # 309 Relational.{>.Precedence,==.Precedence} > > == true // 9 > 13 == true > Type: expression Hardness: 20 # 310 Relational.{>.Precedence,==.{Correct,Precedence}} > > == true // 9 > 4 == true > Type: expression Hardness: 20 # 311 Relational.{>.Precedence,!=.Precedence} > > != false // 7.3 > 3.7 != false > Type: expression Hardness: 20 # 312 Relational.{>.Precedence,!=.{Correct,Precedence}} > > != false // 4.8 > 8.4 != false > Type: expression Hardness: 20 # 313 Relational.{>=.Precedence,==.Precedence} > 9 >= 8.1 == false > Type: expression Hardness: 20 # 314 Relational.{>=.Precedence,==.Precedence} > >= == false // 3.6 >= 6.3 == false > Type: expression Hardness: 20 # 315 Relational.{>=.Precedence,!=.Precedence} > 7 >= 7.0 != true > Type: expression Hardness: 20 # 316 Relational.{>=.Precedence,!=.Precedence} > 8.0 >= 8 != false > Type: expression Hardness: 20 # 317 Relational.{>.Precedence,!=.Precedence} > true != > // true != 3 > 6 > Type: expression Hardness: 20 // // Associativity // LessThan, GreaterThan // small op medium op large, large op medium op small, // small op large op medium, medium op large op small, // large op small op medium, medium op small op large, // equal op equal op equal, equal op equal op true/false // LessEquals, GreaterEquals // small op medium op large, large op medium op small, // small op large op medium, medium op large op small, // large op small op medium, medium op small op large, // equal op equal op equal, equal op equal op true/false // Equals, NotEquals // small op medium op large, large op medium op small, // small op large op medium, medium op large op small, // large op small op medium, medium op small op large, // equal op equal op equal, equal op equal op true/false # 321 Relational.<.Associativity > < < // 8 < 4 < 1 > Type: expression Hardness: 20 # 322 Relational.<.Associativity > < < // 9 < 3 < 5 > Type: expression Hardness: 20 # 323 Relational.{<.Associativity,<=.Associativity} > < <= 1 // 3 < 5 <= 1 > Type: expression Hardness: 20 # 324 Relational.{<.Associativity,>.Associativity} > < > // 4.5 < 5.4 > 3 > Type: expression Hardness: 20 # 325 Relational.{<.Associativity,>=.Associativity} > < >= // 3 < 9 >= 5 > Type: expression Hardness: 20 # 331 Relational.>.Associativity > > > // 9 > 5 > 3 > Type: expression Hardness: 20 # 332 Relational.{>.Associativity,>=.Associativity} > > >= // 3 > 7 >= -1 > Type: expression Hardness: 20 # 333 Relational.{>.Associativity,<.Associativity} > > < // 4 > 8 < 6 > Type: expression Hardness: 20 # 334 Relational.{>.Associativity,<=.Associativity} > > <= // 9 > 5 <= 7 > Type: expression Hardness: 20 # 341 Relational.<=.Associativity > <= <= // 9 <= 5 <= 3 > Type: expression Hardness: 20 # 342 Relational.<=.Associativity > 0 <= 0 <= 0 > Type: expression Hardness: 20 # 343 Relational.<=.Associativity > <= <= 1 // 4 <= 4 <= 1 > Type: expression Hardness: 20 # 351 Relational.{<=.Associativity,<.Associativity} > <= < // 6 <= 6 < 2 > Type: expression Hardness: 20 # 352 Relational.{<=.Associativity,>.Associativity} > <= > // 2 <= 8 > 4 > Type: expression Hardness: 20 # 353 Relational.{<=.Associativity,>=.Associativity} > <= >= 1 // 3 <= 6 >= 1 > Type: expression Hardness: 20 # 354 Relational.{<=.Associativity,>=.Associativity} > <= >= 0 // 6 <= 3 >= 0 > Type: expression Hardness: 20 # 361 Relational.>=.Associativity > >= >= 1 // 7 >= 7 >= 1 > Type: expression Hardness: 20 # 362 Relational.>=.Associativity > >= >= // 9.5 >= 5.25 >= 3 > Type: expression Hardness: 20 # 363 Relational.>=.Associativity > >= >= // 4 >= 4 >= 4 > Type: expression Hardness: 20 # 366 Relational.{>=.Associativity,<.Associativity} > >= < 1 // 5 >= 9 < 1 > Type: expression Hardness: 20 # 371 Relational.{>=.Associativity,<=.Associativity} > >= <= 0 // -5 >= -9 <= 0 > Type: expression Hardness: 20 # 372 Relational.{>=.Associativity,<=.Associativity} > >= <= 0 // 3 >= 8 <= 0 > Type: expression Hardness: 20 # 373 Relational.{>=.Associativity,>.Associativity} > >= > 1 // 6 >= 4 > 1 > Type: expression Hardness: 20 # 374 Relational.{>=.Associativity,>.Associativity} > >= > // 5 >= 5 > 4 > Type: expression Hardness: 20 # 381 Relational.==.Associativity > == == 0 // 9 == 3 == 0 > Type: expression Hardness: 20 # 382 Relational.==.Associativity > == == 1 // 4 == 4 == 1 > Type: expression Hardness: 20 # 383 Relational.==.Associativity > == == false // 7 == 4 == false > Type: expression Hardness: 20 # 384 Relational.==.Associativity > == == true // 9 == 9 == true > Type: expression Hardness: 20 # 391 Relational.{==.Associativity,!=.Associativity} > == != 1 // 7 == 4 != 1 > Type: expression Hardness: 20 # 392 Relational.{==.Associativity,!=.Associativity} > == != 0 // 5 == 5 != 0 > Type: expression Hardness: 20 # 393 Relational.{==.Associativity,!=.Associativity} > == != true // 6 == 3 != true > Type: expression Hardness: 20 # 394 Relational.{==.Associativity,!=.Associativity} > == != false // 6 == 6 != false > Type: expression Hardness: 20 # 401 Relational.!=.Associativity > != != 0 // 3 != 9 != 0 > Type: expression Hardness: 20 # 402 Relational.!=.Associativity > != != // 1 != 1 != 1 > Type: expression Hardness: 20 # 403 Relational.!=.Associativity > != != false // 5 != 9 != false > Type: expression Hardness: 20 # 404 Relational.!=.Associativity > != != true // 7 != 7 != true > Type: expression Hardness: 20 # 411 Relational.{!=.Associativity,==.Associativity} > != == 0 // 2 != 7 == 0 > Type: expression Hardness: 20 # 412 Relational.{!=.Associativity,==.Associativity} > != == 1 // 3 != 3 == 1 > Type: expression Hardness: 20 # 413 Relational.{!=.Associativity,==.Associativity} > != == false // 3 != 5 == false > Type: expression Hardness: 20 # 414 Relational.{!=.Associativity,==.Associativity} > != == true // 9 != 9 == true > Type: expression Hardness: 20 // =================================================================================== // Arithmetic and Relational Operators combined // The combinations are: // Arithmetic Operators Relational Operators // Low (+ -) Low (== !=) // Low High (< <= > >=) // High (* / %) Low (== !=) // High High (< <= > >=) // So, Relational.Arithmetic.Low.High means, // Low for Arithmetic, High for Relational # 1101 Relational.Arithmetic.Low.High.Precedence > + < + // 3 + 9 < 7 + 8 > Type: expression Hardness: 20 # 1102 Relational.Arithmetic.Low.High.Precedence > + < - // 6 + 7 < 15 - 3 > Type: expression Hardness: 20 # 1103 Relational.Arithmetic.Low.High.Precedence > + < * // 4 + 8 < 6 * 2 > Type: expression Hardness: 20 # 1104 Relational.Arithmetic.Low.High.Precedence > + < % // 3 + 4 < 13 % 7 > Type: expression Hardness: 20 # 1105 Relational.Arithmetic.Low.High.Precedence > + < / // 3 + 6 < 15 / 2 > Type: expression Hardness: 20 # 1106 Relational.Arithmetic.Low.High.Precedence > + < * 1.5 // 4 + 2.5 < 4 * 1.5 > Type: expression Hardness: 20 # 1107 Relational.Arithmetic.Low.High.Precedence > + < - 0.5 // 3 + 4 < 9 - 0.5 > Type: expression Hardness: 20 // ---------------------------------------------- # 1111 Relational.Arithmetic.Low.High.Precedence > - < + // 8 - 6 < 8 + 2 > Type: expression Hardness: 20 # 1112 Relational.Arithmetic.Low.High.Precedence > - < - // 4 - 8 < 8 - 4 > Type: expression Hardness: 20 # 1113 Relational.Arithmetic.Low.High.Precedence > - < * // 9 - 3 < 3 * 2 > Type: expression Hardness: 20 # 1114 Relational.Arithmetic.Low.High.Precedence > - < % // 2 - 8 < 8 % 2 > Type: expression Hardness: 20 # 1115 Relational.Arithmetic.Low.High.Precedence > - < / // 9 - 5 < 9 / 4 > Type: expression Hardness: 20 // ---------------------------------------------- # 1121 Relational.Arithmetic.Low.High.Precedence > + <= + // 5 + 3 <= -2 + 6 > Type: expression Hardness: 20 # 1122 Relational.Arithmetic.Low.High.Precedence > + <= - // 4 + 2 <= 9 - 2 > Type: expression Hardness: 20 # 1123 Relational.Arithmetic.Low.High.Precedence > + <= * // 3 + 9 <= 4 * 4 > Type: expression Hardness: 20 # 1124 Relational.Arithmetic.Low.High.Precedence > % <= + // 9 % 3 <= 5 + 7 > Type: expression Hardness: 20 # 1125 Relational.Arithmetic.Low.High.Precedence > + <= / // 2 + 5 <= 2 / 5 > Type: expression Hardness: 20 // ---------------------------------------------- # 1131 Relational.Arithmetic.Low.High.Precedence > - <= + // 9 - 3 <= 2 + 4 > Type: expression Hardness: 20 # 1132 Relational.Arithmetic.Low.High.Precedence > - <= - // 5 - 9 <= 9 - 5 > Type: expression Hardness: 20 # 1133 Relational.Arithmetic.Low.High.Precedence > * <= - // 3 * 2 <= 9 - 2 > Type: expression Hardness: 20 # 1134 Relational.Arithmetic.Low.High.Precedence > - <= % // 6 - 9 <= 6 % 9 > Type: expression Hardness: 20 # 1135 Relational.Arithmetic.Low.High.Precedence > / <= - // 8 / 5 <= 8 - 5 > Type: expression Hardness: 20 # 1136 Relational.Arithmetic.Low.High.Precedence > - 8 <= 8.0 / // 5 - 8 <= 8.0 / 5 > Type: expression Hardness: 20 // ---------------------------------------------- # 1141 Relational.Arithmetic.Low.High.Precedence > + > + // 3 + 6 > 2 + 9 > Type: expression Hardness: 20 # 1142 Relational.Arithmetic.Low.High.Precedence > + > - // 2 + 5 > 2 - 5 > Type: expression Hardness: 20 # 1143 Relational.Arithmetic.Low.High.Precedence > + > * // 3 + 7 > 2 * 6 > Type: expression Hardness: 20 # 1144 Relational.Arithmetic.Low.High.Precedence > + > % // 4 + 4 > 4 % 4 > Type: expression Hardness: 20 # 1145 Relational.Arithmetic.Low.High.Precedence > + > / // 8 + 5 > 8 / 5 > Type: expression Hardness: 20 // ---------------------------------------------- # 1151 Relational.Arithmetic.Low.High.Precedence > - > + // 8 - 2 > 4 + 2 > Type: expression Hardness: 20 # 1152 Relational.Arithmetic.Low.High.Precedence > - > - // 4 - 6 > 3 - 7 > Type: expression Hardness: 20 # 1153 Relational.Arithmetic.Low.High.Precedence > - > * // 6 - 3 > 2 * 2 > Type: expression Hardness: 20 # 1154 Relational.Arithmetic.Low.High.Precedence > - > % // 7 - 7 > 7 % 7 > Type: expression Hardness: 20 # 1155 Relational.Arithmetic.Low.High.Precedence > - > / // 6 - 9 > 6 / 9 > Type: expression Hardness: 20 // ---------------------------------------------- # 1161 Relational.Arithmetic.Low.High.Precedence > + >= + // -5 + 9 >= -9 + 5 > Type: expression Hardness: 20 # 1162 Relational.Arithmetic.Low.High.Precedence > + >= - // 2 + 9 >= 3 - -9 > Type: expression Hardness: 20 # 1163 Relational.Arithmetic.Low.High.Precedence > + >= * // NOT PERFECT // 3 + 7 >= 2 * 5 > Type: expression Hardness: 20 # 1164 Relational.Arithmetic.Low.High.Precedence > 9 % 5 >= 2 + 2 > Type: expression Hardness: 20 # 1165 Relational.Arithmetic.Low.High.Precedence > + >= / // 5 + 8 >= 8 / 5 > Type: expression Hardness: 20 // ---------------------------------------------- # 1171 Relational.Arithmetic.Low.High.Precedence > - >= + // 9 - 4 >= 2 + 3 > Type: expression Hardness: 20 # 1172 Relational.Arithmetic.Low.High.Precedence > - >= - // 4 - 7 >= 5 - 9 > Type: expression Hardness: 20 # 1173 Relational.Arithmetic.Low.High.Precedence > * 0 >= - // 5 * 0 >= 7 - 3 > Type: expression Hardness: 20 # 1174 Relational.Arithmetic.Low.High.Precedence > - >= % // 9 - 6 >= 9 % 6 > Type: expression Hardness: 20 # 1175 Relational.Arithmetic.Low.High.Precedence > / >= - // 4 / 6 >= 4 - 6 > Type: expression Hardness: 20 // ---------------------------------------------- # 1181 Relational.Arithmetic.High.High.Precedence > * < * // 5 * 4 < 6 * 3 > Type: expression Hardness: 25 # 1182 Relational.Arithmetic.High.High.Precedence > * <= / 1 // NOT PERFECT // 2 * 3 <= 6 / 1 > Type: expression Hardness: 20 # 1183 Relational.Arithmetic.High.High.Precedence > 2 * 2 <= 9 % 5 > Type: expression Hardness: 20 # 1184 Relational.Arithmetic.High.High.Precedence > * < * // 5 * 4 < -6 * -3 > Type: expression Hardness: 25 // ---------------------------------------------- # 1191 Relational.Arithmetic.High.High.Precedence > / <= * // 9 / 7 <= 5 * 7 > Type: expression Hardness: 20 # 1192 Relational.Arithmetic.High.High.Precedence > 9 / < 9 / // 9 / 6 < 9 / 5 > Type: expression Hardness: 20 # 1193 Relational.Arithmetic.High.High.Precedence > 9 / <= 9 % // 9 / 5 <= 9 % 5 > Type: expression Hardness: 20 # 1194 Relational.Arithmetic.High.High.Precedence > / 10 > * // 8 / 10 > 2 * 3 > Type: expression Hardness: 20 // ---------------------------------------------- # 1201 Relational.Arithmetic.High.High.Precedence > % < * 1 // 8 % 5 < 3 * 1 > Type: expression Hardness: 20 # 1202 Relational.Arithmetic.High.High.Precedence > % <= / // 7 % 3 <= 7 / 3 > Type: expression Hardness: 20 # 1203 Relational.Arithmetic.High.High.Precedence > % < % // 7 % 5 < 7 % 4 > Type: expression Hardness: 20 # 1204 Relational.Arithmetic.High.High.Precedence > % < % // 9 % 4 < 7 % 4 > Type: expression Hardness: 20 # 1205 Relational.Arithmetic.High.High.Precedence > % > % // 7 % 5 > 5 % 7 > Type: expression Hardness: 20 // ---------------------------------------------- # 1211 Relational.Arithmetic.High.High.Precedence > * > * // 3 * 5 > 5 * 3 > Type: expression Hardness: 20 # 1212 Relational.Arithmetic.High.High.Precedence > * >= / // 2 * 4 >= 9 / 4 > Type: expression Hardness: 20 # 1213 Relational.Arithmetic.High.High.Precedence > * > % // 3 * 2 > 9 % 3 > Type: expression Hardness: 20 // ---------------------------------------------- # 1221 Relational.Arithmetic.High.High.Precedence > / >= * 1 // 15 / 2 >= 6 * 1 > Type: expression Hardness: 20 # 1222 Relational.Arithmetic.High.High.Precedence > 11 / > 11 / // 8 / 5 > 8 / 6 > Type: expression Hardness: 20 # 1223 Relational.Arithmetic.High.High.Precedence > / >= % // NOT PERFECT // 7 / 2 >= 7 % 4 > Type: expression Hardness: 20 # 1224 Relational.Arithmetic.High.High.Precedence > / >= % // 9 / 6 >= 9 % 6 > Type: expression Hardness: 20 # 1225 Relational.Arithmetic.High.High.Precedence > / 5.0 >= / 5 // 8 / 5.0 >= 8 / 5 > Type: expression Hardness: 20 # 1226 Relational.Arithmetic.High.High.Precedence > 12.0 / >= 12 / // 5.0 / 8 >= 5 / 8 > Type: expression Hardness: 20 # 1227 Relational.Arithmetic.High.High.Precedence > 2.0 / >= 2 / // 2.0 / 4 >= 2 / 4 > Type: expression Hardness: 20 // ---------------------------------------------- # 1231 Relational.Arithmetic.High.High.Precedence > % > * // 7 % 3 > 2 * 3 > Type: expression Hardness: 20 # 1232 Relational.Arithmetic.High.High.Precedence > % >= / // 3 % 5 >= 9 / 4 > Type: expression Hardness: 20 # 1233 Relational.Arithmetic.High.High.Precedence > % > % // 3 % 9 > 9 % 3 > Type: expression Hardness: 20 # 1234 Relational.Arithmetic.High.High.Precedence > % > % // 8 % 6 > 8 % 7 > Type: expression Hardness: 20 # 1236 Relational.Arithmetic.High.High.Precedence > % >= / 2.0 // 6 % 9 >= 9 / 2.0 > Type: expression Hardness: 20 // ---------------------------------------------- # 1241 Relational.Arithmetic.Low.Low.Precedence > + == - // 3 + 6 == 3 - -6 > Type: expression Hardness: 20 # 1242 Relational.Arithmetic.Low.Low.Precedence > - == / // 7 - 3 == 9 / 2 > Type: expression Hardness: 20 # 1243 Relational.Arithmetic.Low.Low.Precedence > + == * // 2 + 7 == 3 * 3 > Type: expression Hardness: 20 # 1244 Relational.Arithmetic.Low.Low.Precedence > + == % 10 // NOT PERFECT // 2 + 3 == 5 % 9 > Type: expression Hardness: 20 # 1245 Relational.Arithmetic.Low.Low.Precedence > + == / 2 // NOT PERFECT // 2 + 2 == 9 / 2 > Type: expression Hardness: 20 // ---------------------------------------------- # 1251 Relational.Arithmetic.High.Low.Precedence > * == * // NOT PERFECT // 3 * 8 == 6 * 4 > Type: expression Hardness: 20 # 1252 Relational.Arithmetic.High.Low.Precedence > * 2 == % 2 // 7 * 2 == 7 % 2 > Type: expression Hardness: 20 # 1253 Relational.Arithmetic.High.Low.Precedence > * == / 2 // 3 * 2 == 7 / 2 > Type: expression Hardness: 20 // ---------------------------------------------- # 1261 Relational.Arithmetic.High.Low.Precedence > / == * // 11 / 4 == 3 * 3 > Type: expression Hardness: 20 # 1262 Relational.Arithmetic.High.Low.Precedence > 9 / == 9 / // 9 / 7 == 9 / 6 > Type: expression Hardness: 20 # 1263 Relational.Arithmetic.High.Low.Precedence > / == % // NOT PERFECT // 9 / 3 == 9 % 6 > Type: expression Hardness: 20 # 1264 Relational.Arithmetic.High.Low.Precedence > / == % // 2 / 3 == 2 % 3 > Type: expression Hardness: 20 # 1265 Relational.Arithmetic.High.Low.Precedence > / == % // NOT PERFECT // 8 / 3 == 8 % 3 > Type: expression Hardness: 20 # 1266 Relational.Arithmetic.High.Low.Precedence > 9.0 / 4 == 9 / 4.0 > Type: expression Hardness: 20 # 1267 Relational.Arithmetic.High.Low.Precedence > / == % // 2 / 3 == 3 % 2 > Type: expression Hardness: 20 // ---------------------------------------------- # 1271 Relational.Arithmetic.High.Low.Precedence > % == * // NOT PERFECT // 6 % 8 == 3 * 2 > Type: expression Hardness: 20 # 1272 Relational.Arithmetic.High.Low.Precedence > % == / // 7 % 3 == 7 / 3 > Type: expression Hardness: 20 # 1273 Relational.Arithmetic.High.Low.Precedence > % == % // 3 % 9 == 9 % 3 > Type: expression Hardness: 20 # 1274 Relational.Arithmetic.High.Low.Precedence > % == % // NOT PERFECT // 10 % 3 == 7 % 3 > Type: expression Hardness: 20 # 1275 Relational.Arithmetic.High.Low.Precedence > % == % // NOT PERFECT // 9 % 4 == 9 % 2 > Type: expression Hardness: 20 // ---------------------------------------------- # 1281 Relational.Arithmetic.Low.Low.Precedence > - != + // NOT PERFECT // 3 - -5 != 3 + 5 > Type: expression Hardness: 20 # 1282 Relational.Arithmetic.Low.Low.Precedence > - != * // NOT PERFECT // 5 - -3 != 2 * 4 > Type: expression Hardness: 20 # 1283 Relational.Arithmetic.Low.Low.Precedence > + != / 10 // 4 + 5 != 9 / 10 > Type: expression Hardness: 20 # 1284 Relational.Arithmetic.Low.Low.Precedence > - != % // NOT PERFECT // 4 - -2 != 6 % 10 > Type: expression Hardness: 25 // ---------------------------------------------- # 1291 Relational.Arithmetic.High.Low.Precedence > * != * // NOT PERFECT // -3 * -4 != 6 * 2 > Type: expression Hardness: 20 # 1292 Relational.Arithmetic.High.Low.Precedence > * != % // NOT PERFECT // -2 * -3 != 6 % 9 > Type: expression Hardness: 20 # 1293 Relational.Arithmetic.High.Low.Precedence > * != / 1 // NOT PERFECT // -2 * -4 != 8 / 1 > Type: expression Hardness: 20 // ---------------------------------------------- # 1301 Relational.Arithmetic.High.Low.Precedence > / != * // 11 / 2 != 3 * 2 > Type: expression Hardness: 20 # 1302 Relational.Arithmetic.High.Low.Precedence > / != / // 10 / 6 != 10 / 7 > Type: expression Hardness: 20 # 1303 Relational.Arithmetic.High.Low.Precedence > / != / // 7 / 10 != 6 / 10 > Type: expression Hardness: 20 # 1304 Relational.Arithmetic.High.Low.Precedence > / != % // 9 / 4 != 9 % 4 > Type: expression Hardness: 20 // ---------------------------------------------- # 1311 Relational.Arithmetic.High.Low.Precedence > % != * // 6 % 5 != 2 * 3 > Type: expression Hardness: 20 # 1312 Relational.Arithmetic.High.Low.Precedence > % != / // NOT PERFECT // 4 % 7 != 9 / 2 > Type: expression Hardness: 20 # 1313 Relational.Arithmetic.High.Low.Precedence > % != / // NOT PERFECT // 8 % 3 != 8 / 4 > Type: expression Hardness: 20 # 1314 Relational.Arithmetic.High.Low.Precedence > % != % // NOT PERFECT // 4 % 10 != 10 % 6 > Type: expression Hardness: 20 # 1315 Relational.Arithmetic.High.Low.Precedence > % != % // NOT PERFECT // 9 % 4 != 9 % 8 > Type: expression Hardness: 20 // ---------------------------------------------- // Relational.Parenthesis.Precedence // 1400 // One parenthesis: // (x op y) op z - could be answered with left to right reading // x op (y op z) - foils left to right reading // a < (b == c) - illegal in all but C/C++. Pedantic even in C++ // a < (b < c) - illegal in all but C/C++. Pedantic even in C++ // a == (b < c) - would be evaluated the same with or without () // a == (b == c) - OF INTEREST FOR PRECEDENCE: Combinations of == and !=, a being true/false // Two parentheses - not nested: // (x op1 y) op2 (a op3 b) // op2 can only be == or != to be meaningful and legal in all but C/C++ // op1 and op3 can be // ==, != - OF INTEREST FOR ASSOCIATIVITY // <, <=, >, >=, or any arithmetic operator - in which case, evaluation is the same with/without () // So, eliminate the first (): x op1 y op2 (a op3 b) - OF INTEREST FOR PRECEDENCE // But, if Relational.Parenthesis is to be credited, op3 must be a relational operator. // This restricts op2 to == or !=, and op1 to a relational operator also. # 1400 Relational.Parenthesis.Precedence > true == ( == ) // true == (5 == 9) > Type: expression Hardness: 20 # 1401 Relational.Parenthesis.Precedence > false != ( != ) // false != (5 != 9) > Type: expression Hardness: 20 # 1402 Relational.Parenthesis.Precedence > true != ( == ) // true != (5 == 9) > Type: expression Hardness: 20 # 1403 Relational.Parenthesis.Precedence > false == ( != ) // false == (5 != 9) > Type: expression Hardness: 20 # 1410 Relational.Parenthesis.Precedence > < == ( < ) // 3 < 6 == (6 < 12) > Type: expression Hardness: 30 # 1411 Relational.Parenthesis.Precedence > > != ( > ) // 3 > 6 != (6 > 3) > Type: expression Hardness: 30 # 1412 Relational.Parenthesis.Precedence > <= == ( >= ) // 6 <= 6 == (6 >= 6) > Type: expression Hardness: 30 // Integrated pre-test # 1413 Relational.Parenthesis.Precedence > < != ( > ) // 3 < 6 != (6 > 3) > Type: expression Hardness: 30 # 1414 Relational.Parenthesis.Precedence > > == ( < ) // 7 > 5 == (5 < 7) > Type: expression Hardness: 30 // Integrated post-test # 1415 Relational.Parenthesis.Precedence > >= != ( <= ) // 6 >= 3 != (3 <= 6) > Type: expression Hardness: 30 # 1420 Relational.{Parenthesis.Precedence,Arithmetic.High.{High.Precedence,Low.Precedence}} > < * == ( >= * ) // 6 < 3 * 4 == (6 >= -3 * -4) > Type: expression Hardness: 40 # 1421 Relational.{Parenthesis.Precedence,Arithmetic.{High.Low.Precedence,Low.High.Precedence}} > != / != (0 > - ) // 9 != 9 / 4 != (0 > 4 - 9) > Type: expression Hardness: 40 # 1422 Relational.{Parenthesis.Precedence,Arithmetic.{High.{High.Precedence,Low.Precedence},Low.High.Precedence}} > >= % == (0 <= - ) // 3 >= 3 % 4 == (0 <= 3 - -6) > Type: expression Hardness: 40 # 1423 Relational.{Parenthesis.Precedence,Arithmetic.High.{High.Precedence,Low.Precedence}} > > * != ( < * ) // 6 > -3 * 4 != (6 < 3 * 4) > Type: expression Hardness: 40 # 1424 Relational.{Parenthesis.Precedence,Arithmetic.High.Low.Precedence} > 0 == / != (0 == % ) // 0 == 3 / 6 != (0 == 6 % 6) > Type: expression Hardness: 40 # 1425 Relational.{Parenthesis.Precedence,Arithmetic.High.{High.Precedence,Low.Precedence}} > == % == ( > % ) // 3 == 3 % 6 == (3 > 6 % 3) > Type: expression Hardness: 40 // -------------------------------------------------------------------------- // Relational.Parenthesis.Associativity // 1450 // If we want to credit Relational.Parenthesis, parenthesized root must be relational operator // // Two parentheses - nested: // a op1 (b op2 c op3 (d op4 e)) // op4 or op3 is relational, so, op1 is relational // Used only relational operators, used all of them // a op1 ((b op2 c) op3 d op4 e)) // For a change, used arithmetic operators // (a op1 (b op2 c)) op3 d op4 e // If op2 is relational, op1 is restricted to being relational: == or != // If op2 is not relational, op1 must be relational. // In either case, will be evaluated the same with or without (), except when both op1 and op2 are ==/!= // So, used only ==, != // // Two parentheses - NOT nested // // Two parentheses - NOT nested, with 2 operators per parenthesis // (a op1 b op2 c) op3 (x op4 y op5 z) // Same as templates 1420-1425, less challenging. Not worth it. // // Three parentheses, NOT nested // (a op1 b) op2 (c op3 d) op4 (e op5 f) // op2 and op4 will both be either == or !=, since only they can be concatenated in Java // QUITE WIDE # 1450 Relational.{Parenthesis.Associativity,<.Precedence,!=.Precedence} > true == ( < != ( < )) // true == (3 < 6 != (6 < 3)) > Type: expression Hardness: 30 # 1451 Relational.{Parenthesis.Associativity,!=.Associativity} > false == ( != != ( != )) // false == (3 != 6 != (6 != 3)) > Type: expression Hardness: 30 # 1452 Relational.{Parenthesis.Associativity,>.Precedence,==.Precedence} > false != ( > 0 == ( < 0)) // false != (3 > 0 == (-3 < 0)) > Type: expression Hardness: 30 # 1453 Relational.{Parenthesis.Associativity,>=.Precedence,==.Precedence} > true == ( >= == ( <= )) // true == (4 >= 4 == (4 <= 4)) > Type: expression Hardness: 30 # 1455 Relational.{Parenthesis.Associativity,>=.Precedence,Arithmetic.High.High.Precedence} > true == (( + ) >= * ) // true == ((4 + 3) >= 4 * 3) > Type: expression Hardness: 30 # 1456 Relational.{Parenthesis.Associativity,<=.Precedence,Arithmetic.High.High.Precedence} > false == (( - ) <= / ) // false == ((6 - 3) <= 6 / 3) > Type: expression Hardness: 30 # 1457 Relational.{Parenthesis.Associativity,<.Precedence,Arithmetic.High.High.Precedence} > true != (( - ) < % ) // true != ((6 - 3) < 6 % 3) > Type: expression Hardness: 30 # 1458 Relational.{Parenthesis.Associativity,>.Precedence,Arithmetic.High.High.Precedence} > false != (( - ) > % ) // false != ((3 - 6) > 3 % 6) > Type: expression Hardness: 30 # 1460 Relational.{Parenthesis.Associativity,>.Precedence,==.Precedence} > (true == ( != )) == > // (true == (3 != 6)) == 6 > 3 > Type: expression Hardness: 30 # 1461 Relational.{Parenthesis.Associativity,<=.Precedence,!=.Precedence} > (false == ( == )) != <= // (false == (6 == -6)) != -6 <= 6 > Type: expression Hardness: 30 # 1462 Relational.{Parenthesis.Associativity,<.Precedence,!=.Precedence} > (true != ( == )) != < // (true != (3 == 6)) != 6 < 3 > Type: expression Hardness: 30 # 1463 Relational.{Parenthesis.Associativity,>=.Precedence,==.Precedence} > (false != ( != )) == >= // (false != (-3 != 3)) == -3 >= 3 > Type: expression Hardness: 30 # 1465 Relational.Parenthesis.{Precedence,Associativity} > ( == ) == ( == ) // (5 == 9) == (9 == 5) > Type: expression Hardness: 30 # 1466 Relational.Parenthesis.{Precedence,Associativity} > ( != ) != ( != ) // (3 != 6) != (6 != 12) > Type: expression Hardness: 30 // Integrated pre-test # 1467 Relational.Parenthesis.{Precedence,Associativity} > ( == ) != ( != ) // (5 == 9) != (9 != 5) > Type: expression Hardness: 30 // Integrated post-test # 1468 Relational.Parenthesis.{Precedence,Associativity} > ( != ) == ( == ) // (5 != 9) == (9 == 5) > Type: expression Hardness: 30 // TOO WIDE # 1470 Relational.{Parenthesis.{Precedence,Associativity},==.Associativity} > ( < ) == ( > ) == ( != ) // (3 < 6) == (6 > 3) == (3 != 6) > Type: expression Hardness: 40 # 1471 Relational.{Parenthesis.{Precedence,Associativity},!=.Associativity} > ( > 0) != ( < 0) != ( != ) // (6 > 0) != (-6 < 0) != (6 != -6) > Type: expression Hardness: 40 # 1472 Relational.{Parenthesis.{Precedence,Associativity},==.Associativity} > ( <= ) == ( >= ) == ( == ) // (6 <= 6) == (6 >= 6) == (6 == 6) > Type: expression Hardness: 40 # 1473 Relational.{Parenthesis.{Precedence,Associativity},!=.Associativity} > ( < ) != ( > ) != ( == ) // (6 < 6) != (6 > 6) != (6 == 6) > Type: expression Hardness: 40 // -------------------------------------------------------------------------- // Templates here are for demonstration purposes // Included at the end so that regular practice does not pick up these templates // How to enter boolean values # 90 Demonstration > 2 < 4 > Type: expression Hardness: 50 // How to enter real values, multiple underbraces # 91 Demonstration > 2.0 + 3.0 != 5 * 2 > Type: expression Hardness: 50 // Learning about boolean constants # 92 Demonstration > true == false > Type: expression Hardness: 10 // --------------------------------------------------------------------------