1. A method for programmatically providing a user interface for forming a query, comprising: displaying a first row of query criteria, wherein the query criteria comprises a first operand, a second operand, and a comparative operator for comparing the first operand with the second operand; displaying a second row of query criteria, the second row being logically connected to the first row by a first Boolean connector; displaying a third row of query criteria, the third row being logically connected to the second row by a second Boolean connector; displaying a fourth row of query criteria; displaying the second row and third row together in a bounded area, wherein the bounded area indicates that the second row and the third row are on a child level from the first row, and that the query criteria from the second row and third row will be evaluated together before the query criteria from the first row; in response to a user drag-and-drop operation comprising moving the fourth row within the bounded area, nesting the fourth row of query criteria with the second row and third row of query criteria; and executing a query comprising evaluating the query criteria from the second row, third row, and fourth row together before evaluating the query criteria from the first row, wherein nested query criteria are evaluated before query criteria that are not nested.