Я не знаком с e js, но если предположить, что ваш синтаксический анализатор отключает <
(например, думает, что это начало тега), тогда используйте логическую инверсию less-than
(это not-greater-than-or-equal-to
):
<% if( locals.average > 4.5 && !( locals.average >= 5 ) ) { %>
<div>test</div>
<% } %>
Тем не менее, документация для e js предполагает, что ваш исходный код должен работать - поскольку это просто обычное выражение JavaScript. Если вы узнаете, почему это действительно не сработало, вы должны опубликовать это как ответ и принять этот ответ вместо моего.