Is if a[start] <= target < a[mid] the same as a[start] <= target and target<a[mid] and a[start] < a[mid]? (I think its not, but visually it looks like both are the same) How does this work under the hood? Searched on SO, but couldn't find an answer.