In the case of D, it's a C compatibility thing. Other languages I don't know.
FYI,
auto x = 1 < 2 < 3; as C++ is accepted (but warned about) by GCC asx.cpp:19:20: warning: comparisons like ‘X<=Y<=Z’ do not have their mathematical meaning [-Wparentheses]
auto x = 1 < 2 < 3; Clang gives no warning.