After effect using multiple linear expression based on its value
When expressions are evaluated the first term that returns a result will set the value of the property. If you look at your expression line 1 will always return a result - 0. None of the other lines will be executed.
What you need to do is test what the value is and then execute the right function accordingly.
if (value &lt;=15){linear(value,0,15,0,0)}; 
if (value &lt;= 20){linear(value,15,20,30,80)};
if(value &gt; 20){linear(value,20,30,80,100)};

note that the linear() functions on the second and third line have minimum values of 15 and 20, not 16 and 21—consider what would happen if the value was 15.5 or 20.5.
What the expression does is only evaluate the first linear() function if value is in the 0-15 range. If it is that result is returned and the expression stops being evaluated, if not it goes on to the next line, and so on.