Switch…case in JS

This simple problem gives me an error. Does not get the correct answer. I will be glad if you help.

```let point = 90;
switch (point) {
case point >= 51 && point <= 60:
break;
case point >= 61 && point <= 70:
break;
case point >= 71 && point <= 80:
break;
case point >= 81 && point <= 90:
break;
case point >= 91 && point <= 100:
break;
default:
console.log('You did not pass');
}

```

`Output:` You did not pass

this way

```let point = 90;
switch (true) {
case point >= 51 && point <= 60:
break;
case point >= 61 && point <= 70:
break;
case point >= 71 && point <= 80:
break;
case point >= 81 && point <= 90:
break;
case point >= 91 && point <= 100:
break;
default:
console.log('You did not pass');
}```

can you explain why we write `true`? – Hussein Nadjafli (PO)

The JS `switch` only works on strict equality.

```switch (A) {
case ‘x1’: ...
case ‘x2’: ...
```

is equivalent to

```if       (A === ’x1’) { ...
else if  (A === ’x2’) { ...
```

in your code you replace the possible values [’x1’,’x2’,…] with an evaluation like

```(point >= 61 && point <= 70)
```

which returns either `true` or `false`

```if       (A === (point >= 51 && point <= 60)) { ...
else if  (A === (point >= 61 && point <= 70)) { ...
```

by replacing the `A` by `true` you therefore have a comparison between:

```if       (true === (point >= 51 && point <= 60)) { ...
else if  (true === (point >= 61 && point <= 70)) { ...
```

You can also do:

```function codePrice(val)
{
let code = 'ABCDE'[10 - Math.ceil(val / 10)]
return (!!code) ? `Your price: \${code}` :'You did not pass'
}

console.log( codePrice(90) )```